home *** CD-ROM | disk | FTP | other *** search
- /* type1interface.c
-
- Author - Amish S. Dave
-
- This file contains interface functions that get called by the
- shared library entry points, and calls functions in the type1
- sources.
-
- */
-
- #ifndef T1GST
- #include "global.h"
- #endif
- #include "amishfontrequest.h"
- #include <stdio.h>
-
- /**
- * DEFINES
- **/
- #define DECIPOINTSPERINCH 722.7
- #define DEFAULTRES 75
- #define DEFAULTPOINTSIZE 120
-
-
- /**
- * GLOBAL VARIABLES
- **/
- FontScalableRec vals;
- FontEntryRec entry;
- FontPtr fontptr;
- CharInfoPtr glyphs;
-
-
- /**
- * PROTOTYPES
- **/
- void OpenType1Engine(void);
- void CloseType1Engine(void);
- unsigned long ReadType1Font(FONTREQUEST *fontreq_p);
- struct GlyphMap *GetType1GlyphMap(unsigned long GlyphCode);
- void CloseType1Font(void);
- int MyQueryFontLib(char *filename, char *env, pointer dest);
- unsigned long SetTransformType1Font(FONTREQUEST *fontreq_p);
-
-
- /**
- * Create memory pool
- **/
- void OpenType1Engine(void)
- {
- addmemory2(100000);
- fontptr = NULL;
- }
-
- /**
- * Free memory, cleanup, etc.
- **/
- void CloseType1Engine(void)
- {
- extern psfont *FontP;
-
- free_vm();
- FontP = NULL;
- MyType1CloseFont(fontptr);
- delmemory2();
- }
-
-
- /* return 0 on success */
- unsigned long ReadType1Font(FONTREQUEST *fontreq_p)
- {
- int rc;
-
- vals.x = fontreq_p->DeviceXDPI;
- vals.y = fontreq_p->DeviceYDPI;
- vals.point = fontreq_p->PointHeight * 10;
- vals.pixel = (vals.point * vals.y) / DECIPOINTSPERINCH;
- vals.pixel_set = (fontreq_p->PointSet != 0) ? ((fontreq_p->PointSet * 10 * vals.x) / DECIPOINTSPERINCH) : vals.pixel;
- vals.pixel_matrix[0] = vals.pixel_matrix[3] = vals.pixel;
- vals.ShearSin = fontreq_p->ShearSin;
- vals.ShearCos = fontreq_p->ShearCos;
- vals.RotateSin = fontreq_p->RotateSin;
- vals.RotateCos = fontreq_p->RotateCos;
-
- rc = MyType1OpenScalable(&fontptr, fontreq_p->FontFileName, &vals);
-
- if (rc != Successful)
- return -1;
- else
- return 0;
- }
-
-
- unsigned long SetTransformType1Font(FONTREQUEST *fontreq_p)
- {
- int rc;
-
- vals.x = fontreq_p->DeviceXDPI;
- vals.y = fontreq_p->DeviceYDPI;
- vals.point = fontreq_p->PointHeight * 10;
- vals.pixel = (vals.point * vals.y) / DECIPOINTSPERINCH;
- vals.pixel_set = (fontreq_p->PointSet != 0) ? ((fontreq_p->PointSet * 10 * vals.x) / DECIPOINTSPERINCH) : vals.pixel;
- vals.pixel_matrix[0] = vals.pixel_matrix[3] = vals.pixel;
- vals.ShearSin = fontreq_p->ShearSin;
- vals.ShearCos = fontreq_p->ShearCos;
- vals.RotateSin = fontreq_p->RotateSin;
- vals.RotateCos = fontreq_p->RotateCos;
-
- rc = MyType1SetTransform(fontptr, &vals);
-
- if (rc != Successful)
- return -1;
- else
- return 0;
- }
-
-
- /* return NULL on failure, struct GlyphMap * on success */
- struct GlyphMap *GetType1GlyphMap(unsigned long GlyphCode)
- {
- int rc;
-
- if (GlyphCode >= 256)
- return NULL;
-
- rc = MyType1GetGlyphs(fontptr, GlyphCode, &glyphs);
-
- //if ((glyphs == NULL) && (rc == Successful)) kprintf("NULL glyph returned!\n");
-
- if ((rc != Successful) || (glyphs == NULL))
- return NULL;
- else
- return glyphs->glyphmap;
- }
-
-
- void CloseType1Font(void)
- {
- return;
- }
-
-
- int MyQueryFontLib(char *filename, char *env, pointer dest)
- {
- int rc;
-
- QueryFontLib(filename, env, dest, &rc);
- return rc;
- }
-
- void FatalError(char *line)
- {
- // puts(line);
- }
-